package team.kirohuji.service;


import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import team.kirohuji.domain.SystemUser;


/**
 *  系统用户 业务类
 * @author kirohuji
 *
 */
public interface SystemUserService {

    /**
     * 查询用户的所有权限
     *
     * @param userId 用户ID
     * @return String列表
     */
    List<String> queryAllPerms(Integer userId);

    /**
     * 查询用户的所有菜单ID
     * @param userId 用户主键Id
     * @return Integer列表
     */
    List<Integer> queryAllMenuId(Integer userId);

    /**
     * 根据用户名，查询系统用户
     */
    /**
     * 查询一条记录
     * @param username 用户名
     * @return SystemUser
     */
    SystemUser queryByLoginName(String username);

    /**
     * 根据用户ID，查询用户
     * @param userId 用户主键
     * @return SystemUser
     */
    SystemUser queryObject(Integer userId);

    /**
     * 查询用户列表
     * @param map map对象
     * @return SystemUser
     */
    List<SystemUser> queryList(Map<String, Object> map);

    /**
     * 查询总数
     * @param map map对象
     * @return int
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存用户
     */
    /**
     * 保存用户
     * @param user 用户
     * @throws IllegalArgumentException 异常
     */
    void save(SystemUser user) throws IllegalArgumentException;

    /**
     * 修改用户
     * @param user 用户
     * @throws IllegalArgumentException 异常
     */
    void update(SystemUser user) throws IllegalArgumentException;

    /**
     * 删除用户
     * @param userIds 用户主键列表
     */
    void deleteBatch(Integer[] userIds);

    /**
     * 修改密码
     *
     * @param userId      用户ID
     * @param password    原密码
     * @param newPassword 新密码
     * @return int
     */
    int updatePassword(Integer userId, String password, String newPassword);
    /**
     * 查询所有管理员
     * @return SystemUser列表
     */
    List<SystemUser> queryAllUser();
    
}